/**
 * 
 */
struct  Books{
    names:String,
    author:String,
    content:String
}
impl Books {
    fn iter(&mut self) -> BooksIterator {      
        BooksIterator{
            current_index:0,
            strs:vec![self.names.clone(), self.author.clone(),self.content.clone()]
        }  
    }
}

/**
 * 关键之一：定义一个临时结构，以便迭代器能够访问结构中的字段，并进行查找
 */
struct BooksIterator{
    current_index:usize,
    strs:Vec<String>
}

/**
 * 实现迭代器特质：Iterator
 */
impl Iterator for BooksIterator {
    type Item = String;
    fn next(&mut self) -> Option<String> {
        if self.current_index < 3 {
            let item = self.strs[self.current_index].clone();
            self.current_index += 1;
            Some(item)
        } else {
            None
        }
    }
}   

fn main() {
    let mut b = Books{
        names:String::from("星星之火可以燎原"),
        author:String::from("毛->泽东"),
        content:String::from("新年已经到来几天了，你的信我还没有回答。
        一则因为有些事情忙着，二则也因为我到底写点什么给你呢？
        有什么好一点的东西可以贡献给你呢？
        搜索我的枯肠，没有想出一点什么适当的东西来，因此也就拖延着")        
    };
    let it=b.iter();
    for i in it {
        println!("{}",i);
    }
}
